package com.webserver.core;

import com.webserver.http.HttpRequest;
import com.webserver.http.HttpResponse;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

/**
 * 用于处理请求
 */
public class DispatcherServlet {
    public void service(HttpRequest request, HttpResponse response){
        String path=request.getUri();
        File file=new File("./webapps"+path);
        if(file.exists()&&file.isFile()){
            //资源存在
            response.setEntity(file);
            /*
                 1：通过file获取浏览器实际请求的资源的文件名
                 2：根据文件名获取后缀名
                 3：根据后缀名设置Content-Type对应的值（http.txt找到对应的）
             */
            Map<String,String>mimeMapping=new HashMap<>();
            mimeMapping.put("html","text/html");
            mimeMapping.put("css","text/html");
            mimeMapping.put("js","application/javascript");
            mimeMapping.put("png","image/png");
            mimeMapping.put("gif","image/gif");
            mimeMapping.put("jpg","image/jpeg");

            //index.html
            String fileName=file.getName();
            String ext=fileName.substring(
                    fileName.lastIndexOf(".")+1
            );
            String type=mimeMapping.get(ext);
            /*方法二：
            String[]arr=fileName.split("\\.");
            String type=mimeMapping.get(arr[arr.length-1]);

             */
            response.addHeader("Content-Tye",type);
            response.addHeader("Content-Length",file.length()+" ");

        }else {
            //资源不存在
            response.setStatusCode(404);
            response.setStatusReason("NotFound");
            file = new File("./webapps/root/404.html");
            response.setEntity(file);
            response.addHeader("Content-Tye", "text/html");
            response.addHeader("Content-Length", file.length() + " ");
        }

        response.addHeader("Server","WebServer");
    }
}
